package vista.paneles;

import java.awt.GridLayout;
import java.util.List;

import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class PanelParLabelCombo extends JPanel{
	
	private JComboBox<Object> combo;
	
	public PanelParLabelCombo(String textoEtiqueta)
	{
		super(new GridLayout(0,2));

		agregarComponentes(textoEtiqueta);
	}
	
	public void setDatosCombo(List<?> objetos)
	{
		for (Object o: objetos)
			combo.addItem(o);		
	}
	
	public Object getDatoSeleccionado() throws NingunElementoSeleccionadoException
	{
		Object dato = combo.getSelectedItem();
		
		if (dato == null)
			throw new NingunElementoSeleccionadoException();
		
		return dato;
	}
	
	public void seleccionarDato(Object objeto) throws ElementoNoExistenteException
	{
		for (int elementoNro = 0; elementoNro < combo.getItemCount(); elementoNro++)
		{
			if (combo.getItemAt(elementoNro).toString().compareToIgnoreCase(objeto.toString()) == 0 )
			{
				combo.setSelectedIndex(elementoNro);
				return;
			}
			
		}
		throw new ElementoNoExistenteException("No se encontró elemento coincidente con: " + objeto.toString());
	}
	
	private void agregarComponentes(String textoEtiqueta)
	{
		JLabel lblNombre = new JLabel();
		lblNombre.setText(textoEtiqueta);
		this.add(lblNombre);
		
		combo = new JComboBox<Object>();
		this.add(combo);		
	}
	
	@Override
	public void setEnabled(boolean enable)
	{
		super.setEnabled(enable);
		this.combo.setEnabled(enable);
	}
}